Conventionally, when a host transfers a command to a device, it must be one command per transfer via a transfer interface. With the development of technology of command transfer, a device controller can deal with two or more commands per transfer rather than one. Therefore, a driver of the host can transfer two or more commands to the device controller for processing. It can also divide one command into two or more sub-commands and send them to the device controller. Thus, processing speed for the commands can be faster.
Processes of command transfer can be illustrated by FIG. 1. When the host is boosted or before commands can transferred, the host driver sends an identify command to the device controller via an interface. It is used to identify the information of a storage (HDD (Hard Disk Drive), SSD (Solid State Drive) or memory card) or storages the device controller is managing. The identify command and other commands mentioned later may conform to a bus protocol. For non-volatile-memory-based storages, the bus protocol may be a protocol set forth by a Non Volatile Memory Express (NVME) standard. The NVM Express standard describes a register interface, command set, and feature set for PCI Express-based SSDs. Then, the device controller sends back device information about the storage to the host driver. The device information may include storage unit size, e.g. flash page size, number of block in a SSD, fastest transfer speed, etc. According to the device information, the host driver can provide an address of one command ready to be executed to the device controller. The device controller can read the command from that address and execute it.
As mentioned above, since the driver of the host can divide the command into several (at least two) sub-commands so that the device controller can read the sub-commands from different addresses and execute them in different tasks. It is workable but there is no concrete and feasible method to implement it. The present invention is to disclose a solution for that.